Skip to content

Add frontend-only V3 Quick Hub across 360 core pages#40

Open
360-Host wants to merge 2 commits into
mainfrom
codex/add-customizable-widget-options-in-settings-uwkzxo
Open

Add frontend-only V3 Quick Hub across 360 core pages#40
360-Host wants to merge 2 commits into
mainfrom
codex/add-customizable-widget-options-in-settings-uwkzxo

Conversation

@360-Host

Copy link
Copy Markdown
Collaborator

Summary

Added major frontend-only platform features (no backend changes) for V3 momentum:

  • New shared script: assets/js/platform-v3.js
  • Injected on both index.html and settings.html

New capabilities

  1. V3 Quick Hub floating button

    • Persistent access point for lightweight power tools.
  2. Focus Mode (local)

    • Hides high-distraction chrome (sidebar/auth/settings panel) for cleaner working sessions.
    • Persists in localStorage (360_focus_mode).
  3. Command Palette (Ctrl/Cmd+K)

    • Global page jumper to core 360 routes (AI, Weather, Chat, News, etc.).
    • Search/filter actions inline.
  4. Quick Notes (local)

    • Fast scratchpad saved to localStorage (360_quick_notes_v1).
    • Export notes to .txt without server usage.
  5. Pomodoro Timer (client-side)

    • User-set duration (5–120 min), countdown visible in launcher button.
    • Preferred duration stored locally (360_pomodoro_minutes).

Why this fits request

  • Adds as much as possible without backend edits.
  • Extends beyond widgets to platform-wide UX/productivity features.
  • Works entirely in browser with local persistence.

Validation

  • node --check assets/js/platform-v3.js
  • node --check assets/js/widgets.js

Codex Task

@supabase

supabase Bot commented May 20, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project wiswfpfsjiowtrdyqpxy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 53cf2436fd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread assets/js/platform-v3.js
const tick=()=>{
const left=Math.max(0,Math.ceil((end-Date.now())/1000));
fab.textContent=left>0?`⏱ ${Math.floor(left/60)}:${String(left%60).padStart(2,'0')}`:'Done ✅';
if(left>0) requestAnimationFrame(tick); else setTimeout(()=>fab.textContent='V3 ⚡',4000);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Replace animation-frame loop with second-based Pomodoro ticks

v3PomodoroStart drives the countdown with requestAnimationFrame, which runs ~60 times/second for the full 5–120 minute session. In active tabs this causes unnecessary continuous repaint/work for a once-per-second UI update, so starting a long timer can waste CPU and battery for users. Using a 1s interval/timeout cadence would preserve behavior while avoiding the high-frequency loop.

Useful? React with 👍 / 👎.

Comment thread assets/js/widgets.js

function applyWidgetStyles(card, header, body, w) {
const opacity = clamp(Number(w.opacity ?? 0.85), 0.2, 1);
card.style.background = w.bgColor || `rgba(15,23,42,${opacity})`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Respect widget opacity when a background color is set

applyWidgetStyles only applies the opacity-controlled rgba(...) background when w.bgColor is empty, but the settings form always stores a color value (bgColor: fields.bgColor.value). That means newly created widgets ignore the opacity setting entirely in normal usage, so the opacity control in the UI is effectively non-functional.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant